1. Technical Field
The present invention generally relates to microprocessors and in particular to register files within microprocessors.
2. Description of the Related Art
A microprocessor in an electronic system generally contains multiple functional units and registers utilized to process data. Register files, which are an array of processor registers, contain all general purpose registers of the microprocessor. Functional units such as arithmetic logic unit (ALU), adder units, floating point units execute operations to write data into pertinent register(s) in a register file. The operations of the register files are critical to the microprocessor and important to protect. Register files store data for extended periods of time. Additionally, data is frequently written to and read from register files. Register files are often susceptible to data corruption. Each read of the register file increases the possibilities for propagating corrupted data throughout the electronic system. Therefore, the register files of many microprocessors are protected via parity protection or error correcting codes.
Register files are often affected by parity error. ‘Parity’ is a form of error detection that uses a single bit to represent the odd or even quantities of ‘1’s and ‘0’s in the data. Parity usually consists of one parity bit for each eight bits of data. A computer system often calculates parity for critical reads and writes. On most systems, a parity error detection results in the computer system freezing entirely. The system must then be restarted. Existing approaches to protect register files have major limitations. Specifically, parity protection alone enables error detection with no correction of the data corruption. In the case of parity protection, when the error is detected, recovery is only possible by invoking a high-level operation at the operating system or application level. Often, the software is unable to recover from the “recovery operation”, resulting in a complete reboot of the system and unnecessary system down time. Error correcting codes (ECC) enable detection and correction of errors. However, ECC require additional components. The additional components required by ECC utilize valuable microprocessor area and power, thereby reducing the performance of the microprocessor.